SpriteAtals 指南
- 马三小伙 如何设置 SpriteAtlas 和 AB
- 猫仙洞 如何修复 SBP 打包时,SpriteAtlas 会冗余的问题
都设置好后,如果需要动态加载图集中的子图,使用 YooAsset 填入子图的路径加载即可
Unity 设计 SpriteAtlas 的初衷是为了让开发者感觉不到图集的存在,但是开发者仍然需要掌握部分实际使用经验才能较好的使用
自动生成 SpriteAtals
- Textures
- UIHomePage
- xxx.png
- Atlas
- UIHomepage.spriteatals
正常情况下,所有静态图集都应该存放在 Textures
文件夹下,而自动化工具,会检测 Textures
文件夹的变化,动态生成/删除图集文件,并对图集增加 Textures/UIHomePage
这个文件夹的引用
核心代码
public class SpriteAtalsAutomation : AssetPostprocessor
{
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
// 检查是否是指定的文件夹,是否要删除等等
SpriteAtlas atlas = new();
AssetDatabase.CreateAsset(atlas, "存放位置");
atlas.SetPackingSettings(怎么 Pack);
atlas.SetTextureSettings(怎么压缩);
atlas.SetIncludeInBuild(是否 Include);
if(atlas.GetPackables().Length == 0)
{
// 添加 `Textures/UIHomePage` 文件夹到图集的引用中
atlas.Add(new[] {AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(path)});
}
AssetDatabase.SaveAssets();
}
}
Editor 配置
可以参考下图的绘制方式,将自动化抽象成一条条配置,根据配置动态设置规则
在我们的项目中,我将图集的行为分为 3 类
类型 | 说明 |
---|---|
静态图集 | UI直接挂载的资源 |
动态小图集 | 代码动态加载,且图片都比较小 |
动态大图集 | 代码动态加载,但图片都比较大 |
基于上述原因,配置文件会有是否生成 SpriteAtlas 的开关,同时还会将原始的 png 文件设置当前平台的压缩格式,一次配置好后,就再也不需要关心图集这件事了